/**
 * @author 汤奇
 * @version V1.0
 * @Project BookPro
 * @Package PACKAGE_NAME
 * @Description: 双向链表(LinkedList源代码)
 * @Date 2022/7/26 8:06
 */
public class Test05 {
    public static void main(String[] args) {
        Node<Integer> top = new Node<>();
        Node<Integer> p = top;
        for (int i = 1; i < 5; i++) {
            p.value = i;
            if (i == 4)
                break;
            p.next = new Node<>();

            //p的下一个是新new出来的node对象, 这个新的对象的pre应该指向p
            p.next.pre = p;
            //随行指针跟进
            p = p.next;
        }
        System.out.println(top.next.next.next.pre.pre.next.pre.pre.value);

    }

    /**
     * 双向链表的节点定义
     * @param <T>
     */
    static class Node<T>{
        //携带的数据
        T value;
        //指向前一个节点的引用
        Node<T> pre;
        //指向后一个节点的引用
        Node<T> next;
    }
}
